/* Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/*

 This file is part of the qtscreenshot project
 author: Steven Bai<baizhenxuan#gmail.com>
 with full test under Ubuntu 10.04

 */
#ifndef SCREENSNAPER_H
#define SCREENSNAPER_H

#include <QtGui/QtGui>


class ScreenShot : public QWidget
{
	Q_OBJECT

public:
    ScreenShot(QWidget *parent=0);
private:
    QPixmap fullScreenImage;
    enum DrawState{ DrawInit,DrawRect,DrawResult};
    DrawState draw;
	QPoint startPoint;
    QPoint endPoint;
	QRect snapRect;

protected:
	void paintEvent(QPaintEvent *event);
	void mousePressEvent(QMouseEvent *event);
	void mouseReleaseEvent(QMouseEvent *event);
	void mouseMoveEvent(QMouseEvent *event);
	void keyPressEvent(QKeyEvent *event);
	void paint(QPixmap &pixmap);
	void contextMenuEvent(QContextMenuEvent *event);
	void showEvent(QShowEvent *event);

private slots:
	void save();
    void copy();
    void reSelect();
};

#endif // SCREENSNAPER_H
